//package org.ricks.item;
//
//import java.util.List;
//
//public class ItemManager {
//    public boolean addItem(PlayerContext context, int typeId, int amount) {
//        ItemMeta meta = ItemFactory.getMeta(typeId);
//        if (meta == null) return false;
//
//        List<ItemInstance> stackables = findStackableItems(context, typeId);
//        int remaining = amount;
//        int maxStack = meta.maxStack();
//
//        // 堆叠现有道具
//        for (ItemInstance item : stackables) {
//            int space = maxStack - item.amount();
//            if (space <= 0) continue;
//            int add = Math.min(space, remaining);
//            context.updateItem(item.withAmount(item.amount() + add));
//            remaining -= add;
//            if (remaining == 0) break;
//        }
//
//        // 创建新实例
//        while (remaining > 0) {
//            int createAmount = Math.min(maxStack, remaining);
//            ItemInstance newItem = new ItemInstance(typeId, UUID.randomUUID().toString(), createAmount);
//            context.addItem(newItem);
//            remaining -= createAmount;
//        }
//        return true;
//    }
//
//    private List<ItemInstance> findStackableItems(PlayerContext context, int typeId) {
//        return context.getInventory().stream()
//                .filter(item -> item.typeId() == typeId && ItemFactory.getBehavior(typeId).isStackable(item))
//                .collect(Collectors.toList());
//    }
//}
